#if !defined(__APP_POOL_H)
#define __APP_POOL_H

// 任务结构体
typedef struct {
    int (*task_fun)(void *arg); // 任务函数
    void *arg; // 任务函数执行需要的参数
} Task;

/**
 * @brief 初始化线程池
 * 1. 创建消息队列
 * 2. 创建多个分线程
 * @param size 线程池大小
 * @return int 0: 成功, -1: 失败
 */
int app_pool_init(int size);

/**
 * @brief 销毁线程池
 * 1. 关闭并删除消息队列
 * 2. 取消停止所有线程
 * 
 */
void app_pool_destroy();

/**
 * @brief 添加任务
 *   将任务发送到消息队列中
 * @param task_fun 
 * @param arg 
 */
void app_pool_addTask(int (*task_fun)(void *arg), void *arg);

#endif // __APP_POOL_H
